package org.robustcoupe.task.example;

import org.robustcoupe.task.AsyncerDecorator;
import org.robustcoupe.task.TaskChain;
import org.robustcoupe.task.example.resources.GenesisCoupeTask;
import org.robustcoupe.task.example.resources.LoggingCurrentTimeTask;
import org.robustcoupe.task.example.resources.TiburonCoupeTask;
import org.robustcoupe.task.example.resources.TuscanyCoupeTask;


public class CombinationExample {
  public static void main(String[] args) throws Exception {
    new TaskChain()
      .add(new GenesisCoupeTask())
      .add(new TuscanyCoupeTask())
      .add(new TiburonCoupeTask())
    .wrappedByAspect()
      .before(new LoggingCurrentTimeTask().prefix("[Chain]Before"))
      .after(
          new TaskChain()
            .add(new LoggingCurrentTimeTask().prefix("[Chain]After1"))
            .add(new LoggingCurrentTimeTask().prefix("[Chain]After2")))
    .wrappedByAsycer()
    .execute();
    AsyncerDecorator.shutdown();    
  }
}
